package com.tao.clients;

import com.tao.param.ProductCollectParam;
import com.tao.param.ProductIdParam;
import com.tao.param.ProductSaveParam;
import com.tao.pojo.Category;
import com.tao.pojo.Product;
import com.tao.utils.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;

/**
 * @author 86130
 * 商品调用服务客户端
 */
@FeignClient("product-service")
public interface ProductClient {

    /**
     * 搜索服务调用，进行全部数据查询
     * 用于搜索数据库同步数据
     *
     * @return
     */
    @GetMapping("/product/list")
    List<Product> allList();

    /**
     * 收藏服务调用
     *
     * @param productCollectParam
     * @return
     */
    @PostMapping("product/collect/list")
    R productIds(@RequestBody ProductCollectParam productCollectParam);

    /**
     * 购物车添加服务调用
     *
     * @param productIdParam
     * @return
     */
    @PostMapping("product/cart/detail")
    Product productDetail(@RequestBody ProductIdParam productIdParam);

    /**
     * 购物车展示调用
     * @param productCollectParam
     * @return
     */
    @PostMapping("product/cart/list")
    List<Product> cartList(@RequestBody ProductCollectParam productCollectParam);

    /**
     * 类别调用查询商品数量
     * @param categoryId
     * @return
     */
    @PostMapping("product/admin/count")
    Long adminCount(@RequestBody Integer categoryId);

    /**
     * 类别调用查询商品数量
     * @param productSaveParam
     * @return
     */
    @PostMapping("product/admin/save")
    R adminSave(@RequestBody ProductSaveParam productSaveParam);

    /**
     * 商品更新
     * @param product
     * @return
     */
    @PostMapping("product/admin/update")
    R adminUpdate(@RequestBody Product product);

    /**
     * 商品删除
     * @param productId
     * @return
     */
    @PostMapping("product/admin/remove")
    R adminRemove(@RequestBody Integer productId);
}
